【小ネタ】複数のSwitch Roleでのクロスアカウントアクセス用URLを生成するスクリプトを書いた
サーモン大好き、横山です。
今回は複数のSwitch Roleでのクロスアカウントアクセス用URLを生成するスクリプトの紹介をします。
はじめに
本記事は、「【小ネタ】複数のSwitch Roleでのクロスアカウントアクセスをブラウザのブックマークで管理する」を元にSwitch先のマネジメントコンソールからSwitchRoleするためのURLを生成します。
SwitchRoleを作成した都度、ブックマークを作ればさほど苦労はないのですが、一度にたくさんのSwitchRole用のURLを作成するのは骨が折れそうでした。そこで、少しでも楽をしようとSwitch先の環境でボタンを押したら、そこへSwitchRoleするURLに飛ぶJavaScriptを書きました。
手順
- ブックマーク用のJavaScriptを作成
- chromeのブックマーク作成
- 動作確認
1. ブックマーク用のJavaScriptを作成
今回はマネジメントコンソールの右上の画面の部分から情報を引っ張ってきます。
ソースコードは以下です。
(function(){ function run() { $=jQuery; accountId=$('#awsc-role-display-name-account').text().replace(/-/g,''); roleName=$('#awsc-role-display-name-user').text(); color=''; displayName=''; displayNameSelector=$('#nav-usernameMenu:has(.awsc-switched-role-username-wrapper)'); if (displayNameSelector) { color=$('.awsc-switched-role-username-wrapper', displayNameSelector).css('background-color') .toString() .match(/\d+/g) .map(function(n){ return ("0"+(n|0).toString(16)).toUpperCase().substr(-2); }) .join(""); displayName=$('.nav-elt-label', displayNameSelector).text(); } else { displayName=$('#nav-usernameMenu>.nav-elt-label:first').text(); } displayName=$('#nav-usernameMenu>.awsc-switched-role-username-wrapper>.nav-elt-label:first').text(); url='https://signin.aws.amazon.com/switchrole'; url+='?account='+accountId; url+='&roleName='+roleName; url+='&displayName='+displayName; if (color.length > 0) { url+='&color='+color; } window.location.assign(url); } if(typeof jQuery !== 'function') { var d=document; var s=d.createElement('script'); s.src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'; s.onload=run; d.body.appendChild(s); } else { run(); } } )();
こちらのソースコードをMinifyします。Minifyは複数Webサービスが有り、今回は jscompress を使用しました。
Minifyされたコードが以下になります。
!function(){function e(){$=jQuery,accountId=$("#awsc-role-display-name-account").text().replace(/-/g,""),roleName=$("#awsc-role-display-name-user").text(),color="",displayName="",displayNameSelector=$("#nav-usernameMenu:has(.awsc-switched-role-username-wrapper)"),displayNameSelector?(color=$(".awsc-switched-role-username-wrapper",displayNameSelector).css("background-color").toString().match(/\d+/g).map(function(e){return("0"+(0|e).toString(16)).toUpperCase().substr(-2)}).join(""),displayName=$(".nav-elt-label",displayNameSelector).text()):displayName=$("#nav-usernameMenu>.nav-elt-label:first").text(),displayName=$("#nav-usernameMenu>.awsc-switched-role-username-wrapper>.nav-elt-label:first").text(),url="https://signin.aws.amazon.com/switchrole",url+="?account="+accountId,url+="&roleName="+roleName,url+="&displayName="+displayName,color.length>0&&(url+="&color="+color),window.location.assign(url)}if("function"!=typeof jQuery){var a=document,r=a.createElement("script");r.src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js",r.onload=e,a.body.appendChild(r)}else e()}();
さらに、Chromeのブックマークに貼っつけるために先頭に javascript:
の文字を追加します。
javascript:!function(){function e(){$=jQuery,accountId=$("#awsc-role-display-name-account").text().replace(/-/g,""),roleName=$("#awsc-role-display-name-user").text(),color="",displayName="",displayNameSelector=$("#nav-usernameMenu:has(.awsc-switched-role-username-wrapper)"),displayNameSelector?(color=$(".awsc-switched-role-username-wrapper",displayNameSelector).css("background-color").toString().match(/\d+/g).map(function(e){return("0"+(0|e).toString(16)).toUpperCase().substr(-2)}).join(""),displayName=$(".nav-elt-label",displayNameSelector).text()):displayName=$("#nav-usernameMenu>.nav-elt-label:first").text(),displayName=$("#nav-usernameMenu>.awsc-switched-role-username-wrapper>.nav-elt-label:first").text(),url="https://signin.aws.amazon.com/switchrole",url+="?account="+accountId,url+="&roleName="+roleName,url+="&displayName="+displayName,color.length>0&&(url+="&color="+color),window.location.assign(url)}if("function"!=typeof jQuery){var a=document,r=a.createElement("script");r.src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js",r.onload=e,a.body.appendChild(r)}else e()}();
2. chromeのブックマーク作成
Chromeのブックマークマネージャを開きます。
ブックマークバーの「管理」の画面上で右クリックをし、「ページを追加(G)」を選択します。
名前は任意で結構ですここでは「make_role_url」って名前にします。URLは先程作成した javascript:!function()…
をコピーして貼り付けます。
3. 動作確認
ChromeでSwitchRoleしたマネジメントコンソールの画面を出します。
make_role_url
のブックマークを押します。
現在SwitchRoleしてる環境へのSwitchするためのページが開きます。
まとめ
たくさんのSwitchRole用のブックマークを作成が面倒になった時の参考になれば幸いです。 注意点として、マネジメントコンソールの画面構成が変わると使えなくなる小ネタですので、画面構成が変わった際の動作不良を起こす可能性があります、ご了承ください。(2016/05/19現在)